perm filename IO.SAI[1,BGB] blob
sn#001252 filedate 1972-10-22 generic text, type T, neo UTF8
00100 ENTRY INFEA,OUTFEA, INFWN,OUTFWN, INCAM,OUTCAM;
00200 BEGIN "TVEDIO"
00300 REQUIRE "ABBREV[SYS,BGB]" SOURCE_FILE;
00400 REQUIRE "TRIGER[SYS,BGB]" SOURCE_FILE;
00500 REQUIRE "COMMON[IA,BGB]" SOURCE_FILE;
00600
00700 α FEATURE DATUM - 3D LOCUS;
00800 REAL ARRAY ∂F[1:5]; α X,Y,Z,R,dR;
00900 REAL ARRAY ITEMVAR F;
01000 INTEGER ITEMVAR TV;
00100 INTERNAL PROCEDURE OUTFEA;
00200 BEGIN "OUTFEA"
00300 STRING STR,BLANKS;
00400 INTEGER I,N,FLG;
00500 OPEN(1,"DSK",0,0,3,0,0,0);
00600 DO BEGIN
00700 OUTSTR(↓&9&"FEA FILE = ");
00800 STR ← INCHWL;
00900 ENTER(1,STR&".FEA[F2D,BGB]",FLG);
01000 END UNTIL ¬FLG;
01100 SETFORMAT(10,4);
01200 ∀ F|FεFEASET DO
01300 BEGIN
01400 STR ← CVIS(F,FLG);
01500 N ← 25 - LENGTH(STR);
01600 OUT(1,STR);
01700 OUT(1," "[1 FOR N]);
01800 FOR I←1 STEP 1 UNTIL 5 DO
01900 OUT(1,CVG(∂(F)[I])&(IF I=5 THEN ↓ ELSE ""));
02000 END;
02100 OUT(1,"*"&↓);
02200 CLOSE(1);
02300 RELEASE(1);
02400 OUTSTR(9&"EOF."&↓&"*");
02500 END "OUTFEA";
00100 INTERNAL PROCEDURE INFEA;
00200 BEGIN "INFEA"
00300 STRING STR,LINE;
00400 INTEGER I,FLG,CNT,BRK,EOF;
00500 OPEN(1,"DSK",0,3,0,CNT,BRK,EOF);
00600 DO BEGIN OUTSTR(↓&9&"FEA FILE = ");
00700 STR ← INCHWL;
00800 LOOKUP(1,STR&".FEA[F3D,BGB]",FLG);
00900 END UNTIL ¬FLG;
01000 BREAKSET(1,13,"I");
01100 BREAKSET(1,10,"O");
01200 BREAKSET(2,32,"I");
01300 WHILE TRUE DO
01400 BEGIN "LINE"
01500 CNT ← 150;
01600 LINE ← INPUT(1,1);
01700 STR ← SCAN(LINE,2,BRK);
01800 IF STR="*" THEN DONE;
01900 OUTSTR(9&STR&↓);
02000 IF EOF THEN DONE;
02100 FOR I←1 STEP 1 UNTIL 5 DO
02200 ∂F[I] ← REALSCAN(LINE,BRK);
02300 F ← CVSI(STR,FLG);
02400 IF FLG THEN
02500 α CREATE A NEW FEATURE;
02600 BEGIN
02700 F ← NEW(∂F);
02800 NEW_PNAME(F,STR);
02900 PUT F IN FEASET;
03000 END ELSE
03100 α UPDATE AN OLD FEATURE'S DATUM;
03200 ARRBLT(∂(F)[1],∂F[1],5);
03300 END "LINE";
03400 CLOSE(1);
03500 RELEASE(1);
03600 OUTSTR("EOF."&↓&"*");
03700 END "INFEA";
00100 α FEATURE-WINDOW FILE OUTPUT;
00200 INTERNAL PROCEDURE OUTFWN;
00300 BEGIN "OUTFWN"
00400 REAL ARRAY ITEMVAR FWN;
00500 INTEGER FLG,N1,N2;
00600 STRING STR,BLANKS,TVSTR,FEASTR;
00700 OPEN(1,"DSK",0,0,3,0,0,0);
00800 DO BEGIN OUTSTR(↓&9&"FWN FILE = ");
00900 STR ← INCHWL;
01000 ENTER(1,STR&".FWN[F2D,BGB]",FLG);
01100 END UNTIL ¬FLG;
01200 SETFORMAT(12,4);
01300 ∀ TV|TVεTVSET DO
01400 BEGIN
01500 TVSTR ← CVIS(TV,FLG);
01600 N1 ← 8 - LENGTH(TVSTR);
01700 ∀ F,FWN|TV⊗F≡FWN DO
01800 BEGIN
01900 FEASTR ← CVIS(F,FLG);
02000 N2 ← 25 - LENGTH(FEASTR);
02100 OUT(1,TVSTR);
02200 OUT(1," "[1 FOR N1]);
02300 OUT(1,FEASTR);
02400 OUT(1,BLANKS[1 FOR N2]);
02500 OUT(1,CVG(∂(FWN)[1]));
02600 OUT(1,CVG(∂(FWN)[2]));
02700 OUT(1,CVG(∂(FWN)[3]));
02800 OUT(1,CVG(∂(FWN)[4]));
02900 OUT(1,CVG(∂(FWN)[5]));
03000 OUT(1,↓);
03100 END;
03200 END;
03300 OUT(1,"*");
03400 CLOSE(1);
03500 RELEASE(1);
03600 OUTSTR(9&"EOF."&↓&"*");
03700 END "OUTFWN";
00100 INTERNAL PROCEDURE INFWN;
00200 BEGIN "INFWN"
00300 STRING STR,LINE,TVSTR,FEASTR;
00400 REAL ARRAY ITEMVAR FWN; REAL ARRAY ∂FWN[1:5];
00500 INTEGER I,FLG,CNT,BRK,EOF;
00600 α FILE OPENING CEREMONIES;
00700 OPEN(1,"DSK",0,3,0,CNT,BRK,EOF);
00800 DO BEGIN OUTSTR(↓&9&"FWN FILE = ");
00900 STR ← INCHWL;
01000 LOOKUP(1,STR&".FWN[F2D,BGB]",FLG);
01100 END UNTIL ¬FLG;
01200 BREAKSET(1,13,"I");
01300 BREAKSET(1,10,"O");
01400 BREAKSET(2,32,"I");
01500 α EACH LINE CONTAINS: TVFILE FEATURE SX SY DX DY;
01600 WHILE TRUE DO
01700 BEGIN "LINE"
01800 LABEL L;
01900 L: CNT ← 150;
02000 LINE ← INPUT(1,1);
02100 IF LENGTH(LINE)=0 THEN GO L;
02200 IF EOF THEN DONE;
02300 TVSTR ← SCAN(LINE,2,BRK);
02400 IF TVSTR="*" THEN DONE;
02500 WHILE LINE=" " DO BRK←LOP(LINE);
02600 FEASTR ← SCAN(LINE,2,BRK);
02700 FOR I←1 STEP 1 UNTIL 4 DO
02800 ∂FWN[I] ← REALSCAN(LINE,BRK);
02900 α SKIP THIS FEATURE IF ITS TV ITEM ISN'T AROUND;
03000 TV ← CVSI(TVSTR,FLG);
03100 IF FLG THEN GO L;
00100 α MAKE A NEW FEATURE ITEM IF NECESSARY;
00200 F ← CVSI(FEASTR,FLG);
00300 IF FLG THEN
00400 BEGIN "FEA"
00500 REAL ARRAY ∂F[1:5];
00600 F ← NEW(∂F);
00700 NEW_PNAME(F,FEASTR);
00800 PUT F IN FEASET;
00900 END "FEA";
01000
01100 α CHECK FOR OLD TRIPLE;
01200 FLG ← TRUE;
01300 ∀ FWN|TV⊗F≡FWN DO
01400 BEGIN
01500 ARRBLT(∂(FWN)[1],∂FWN[1],4);
01600 FLG ← FALSE;
01700 END;
01800 α MAKE A NEW FWINDO ITEM AND TRIPLE;
01900 IF FLG THEN
02000 BEGIN
02100 FWN ← NEW(∂FWN);
02200 MAKE TV⊗F≡FWN;
02300 OUTSTR(9&"MAKE "&TVSTR&" ⊗ "&FEASTR&" ≡ #"&CVS(#(FWN))&↓);
02400 END;
02500 END "LINE";
02600 CLOSE(1);
02700 RELEASE(1);
02800 OUTSTR("EOF."&↓&"*");
02900 END "INFWN";
00100 INTERNAL PROCEDURE OUTCAM;
00200 BEGIN "OUTCAM"
00300 REAL ARRAY ITEMVAR CAM;
00400 STRING STR;
00500 INTEGER FLG;
00600 OPEN(1,"DSK",8,0,2,0,0,0);
00700 DO BEGIN OUTSTR(↓&9&"CAM FILE = ");
00800 STR ← INCHWL;
00900 ENTER(1,STR&".CAM[CAM,BGB]",FLG);
01000 END UNTIL ¬FLG;
01100 α OUTPUT THE CAMERA LOCOR OF TVFILES;
01200 ∀ TV,CAM|TVεTVSET ∧ LOCOR⊗TV≡CAM DO
01300 BEGIN
01400 WORDOUT(1,CVSIX(CVIS(TV,FLG)));
01500 ARRYOUT(1,∂(CAM)[1,1],12);
01600 END;
01700 RELEASE(1);
01800 OUTSTR(9&"EOF."&↓&"*");
01900 END "OUTCAM";
02000
00100 INTERNAL PROCEDURE INCAM;
00200 BEGIN "INCAM"
00300 STRING STR;
00400 INTEGER FLG,N,EOF;
00500 REAL ARRAY ITEMVAR CAM;
00600 REAL ARRAY ∂CAM[1:4,1:3];
00700 OPEN(1,"DSK",8,2,0,0,0,EOF);
00800 DO BEGIN OUTSTR(↓&9&"CAM FILE = ");
00900 STR ← INCHWL;
01000 LOOKUP(1,STR&".CAM[CAM,BGB]",FLG);
01100 END UNTIL ¬FLG;
01200 BREAKSET(2,32,"I");
01300 α INPUT THE CAMERA LOCOR OF EXISTENT TVFILES;
01400 WHILE TRUE DO
01500 BEGIN "LOOP"
01600 STRING TVSTR;
01700 LABEL EOL;
01800 EOL: N ← WORDIN(1);
01900 IF N=0 ∨ EOF THEN DONE;
02000 ARRYIN(1,∂CAM[1,1],12);
02100 TVSTR ← CVXSTR(N);
02200 TVSTR ← SCAN(TVSTR,2,FLG);
02300 TV ← CVSI(TVSTR,FLG);
02400 IF FLG THEN GO EOL;
02500 FLG ← TRUE;
02600 ∀ CAM|LOCOR⊗TV≡CAM DO
02700 BEGIN
02800 FLG ← FALSE;
02900 ARRBLT(∂(CAM)[1,1],∂CAM[1,1],12);
03000 END;
03100 IF FLG THEN
03200 BEGIN
03300 CAM ← NEW(∂CAM);
03400 MAKE LOCOR⊗TV≡CAM;
03500 OUTSTR(" MAKE LOCOR ⊗ "&TVSTR&" ≡ "&CVS(#(CAM))&↓);
03600 END;
03700 END "LOOP";
03800 RELEASE(1);
03900 OUTSTR("EOF."&↓&"*");
04000 END "INCAM";
04100 END "TVEDIO";